//package leetcode;
//
//class Solution {
//    public int search(int[] nums, int target) {
//        int leftIndex = binarySearch(nums, target, true);
//        int rightIndex = binarySearch(nums, target, false) - 1;
//
//        if (leftIndex <= rightIndex && rightIndex < nums.length && nums[leftIndex] == target && nums[rightIndex] == target) {
//            return rightIndex - leftIndex + 1;
//        }
//        return 0;
//    }
//
//    private int binarySearch(int[] nums, int target, boolean lower) {
//        int left = 0;
//        int right = nums.length - 1;
//        int ans = 0;
//
//        while (left <= right) {
//            int mid = (left + right) / 2;
//            if (nums[mid] > target || (lower && nums[mid] >= target)) {
//                right = mid - 1;
//                ans = mid;
//            } else {
//                left = mid + 1;
//            }
//
//        }
//        return ans;
//    }
//}
//
//public class Test1S {
//}
